define(function(require, exports) {
	var util = require('util');
	var pubjs = require('pubjs');
	var view = require('@base/view');

	// 模块层级说明：
	// 1、首先由layout模块布局
	// 2、layout下由不同类型的block构建块样式及块容器
	// 3、 block下才是具体的chart模块
	var Main = view.container.extend({
		init: function(config) {
			config = pubjs.conf(config, {
				// 布局模块和布局模块配置
				layout: {
					module: 'modules/nestLayout.base',
					config: {}
				},
				/**
				 * 模块配置
				 * eg:
				 *	{
				 *		// 模块名称，如果没传，则默认为target
				 *		name: '',
				 *		// layout中的容器名称
				 *		target: '',
				 *		// 模块uri
				 *		module: '',
				 *		// 模块配置
				 *		config: {}
				 *	}
				 */
				blocks: []
			});

			this.$prefix = 'DASHBOARD_BLOCK_';
			this.Super('init', arguments);
		},
		afterBuild: function() {
			var c = this.getConfig();
			this.createDelay('layout', c.layout.module, util.extend({
				target: this.getContainer()
			}, c.layout.config));
			this.createDelay(true, this.createBlocks);
		},
		createBlocks: function() {
			var c = this.getConfig();
			util.each(c.blocks, function(item) {
				this.createAsync(this.$prefix + (item.name || item.target), item.module, util.extend({
					target: this.$.layout.getContainer(item.target)
				}, item.config));
			}, this);
		},
		getBlock: function(name) {
			return this.$[this.$prefix + name];
		},
		load: function() {
		}
	});
	exports.main = Main;
});